package pe.gob.onpe.ejb;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Usuario entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "USUARIO", schema = "SVENP", uniqueConstraints = {})
public class Usuario implements java.io.Serializable {

	// Fields
	private static final long serialVersionUID = 6770288851828101748L;
	private String usuario;
	private Perfiles perfiles;
	private String contrasena;
	private String nombre;
	private String apellidospaterno;
	private String apellidosmaterno;
	private String estado;
	private Set<LogAuditoria> logAuditorias = new HashSet<LogAuditoria>(0);

	// Constructors

	/** default constructor */
	public Usuario() {
	}

	/** minimal constructor */
	public Usuario(String usuario, Perfiles perfiles, String nombre) {
		this.usuario = usuario;
		this.perfiles = perfiles;
		this.nombre = nombre;
	}

	/** full constructor */
	public Usuario(String usuario, Perfiles perfiles, String contrasena,
			String nombre, String apellidospaterno, String apellidosmaterno,
			String estado, Set<LogAuditoria> logAuditorias) {
		this.usuario = usuario;
		this.perfiles = perfiles;
		this.contrasena = contrasena;
		this.nombre = nombre;
		this.apellidospaterno = apellidospaterno;
		this.apellidosmaterno = apellidosmaterno;
		this.estado = estado;
		this.logAuditorias = logAuditorias;
	}

	// Property accessors
	@Id
	@Column(name = "USUARIO", unique = true, nullable = false, insertable = true, updatable = true)
	public String getUsuario() {
		return this.usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "PERFILES_ID", unique = false, nullable = false, insertable = true, updatable = true)
	public Perfiles getPerfiles() {
		return this.perfiles;
	}

	public void setPerfiles(Perfiles perfiles) {
		this.perfiles = perfiles;
	}

	@Column(name = "CONTRASENA", unique = false, nullable = true, insertable = true, updatable = true)
	public String getContrasena() {
		return this.contrasena;
	}

	public void setContrasena(String contrasena) {
		this.contrasena = contrasena;
	}

	@Column(name = "NOMBRE", unique = false, nullable = false, insertable = true, updatable = true)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column(name = "APELLIDOSPATERNO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getApellidospaterno() {
		return this.apellidospaterno;
	}

	public void setApellidospaterno(String apellidospaterno) {
		this.apellidospaterno = apellidospaterno;
	}

	@Column(name = "APELLIDOSMATERNO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getApellidosmaterno() {
		return this.apellidosmaterno;
	}

	public void setApellidosmaterno(String apellidosmaterno) {
		this.apellidosmaterno = apellidosmaterno;
	}

	@Column(name = "ESTADO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getEstado() {
		return this.estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<LogAuditoria> getLogAuditorias() {
		return this.logAuditorias;
	}

	public void setLogAuditorias(Set<LogAuditoria> logAuditorias) {
		this.logAuditorias = logAuditorias;
	}

}